#ifndef __SENSOR_CONFIG_H__
#define __SENSOR_CONFIG_H__

#include <ros/ros.h>
#include "common/glog/glog.h"
#include "common/file_manager/yaml_file.h"
#include "core/robot_model/robot_model_base.h"
#include "motion_controller/perception/sensors/base/sensor_base.h"

#include <iostream>
#include <sstream>
#include <unordered_map>
using namespace std;

// 传感器配置
class SensorConfig{
    public:
        SensorConfig();
        ~SensorConfig() = default;

        // 参数初始化
        void paramsInit();
        // 加载传感器配置 
        bool loadSnsorConfig();
        // 打印参数配置
        string toString(SensorParams sensor_params);
        // 打印过滤配置
        string toString(SensorFilterConfig filter_config);
        // 获取雷达配置
        vector<SensorParams> getLidarParams();
        // 获取相机配置
        vector<SensorParams> getDepthCameraParams();
        // 获取IMU配置
        vector<SensorParams> getIMUParams();
        // 获取机器人配置信息
        RobotModel getRobotModel();

        // 获取过滤配置
        SensorFilterConfig getSensorFilterConfig(){
            return filter_config_;
        }

    private:
        bool debug_mode_;               //调试模式
        string sensor_config_file_;     //传感器配置文件
        string robot_config_file_;      //机器人配置文件
        string base_frame_;
        unordered_map<int, SensorParams> lidar_params_map_;   
        unordered_map<int, SensorParams> depth_params_map_; 
        unordered_map<int, SensorParams> imu_params_map_; 
        SensorFilterConfig filter_config_;
        std::shared_ptr<ModelBase> mode_ptr_;
};



#endif